home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIP Haziran 2001.iso / prog / haziran / 19 / setup.exe / data.z / p9050_lib.h < prev    next >
C/C++ Source or Header  |  2001-04-11  |  5KB  |  134 lines

  1. #ifndef _P9050_LIB_H_
  2. #define _P9050_LIB_H_
  3.  
  4. #ifdef __KERNEL__
  5.     #include "../../../include/kdstdlib.h"
  6. #endif //__KERNEL__
  7. #include "../../../include/windrvr.h"
  8. #include "../../../samples/shared/pci_regs.h"
  9. #include "../../../samples/shared/bits.h"
  10.  
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. // PLX register definitions 
  16. enum {
  17.     P9050_LAS0RR  = 0x00,
  18.     P9050_LAS1RR  = 0x04,
  19.     P9050_LAS2RR  = 0x08,
  20.     P9050_LAS3RR  = 0x0c,
  21.     P9050_EROMRR  = 0x10,
  22.     P9050_LAS0BA  = 0x14,
  23.     P9050_LAS1BA  = 0x18,
  24.     P9050_LAS2BA  = 0x1c,
  25.     P9050_LAS3BA  = 0x20,
  26.     P9050_EROMBA  = 0x24,
  27.     P9050_LAS0BRD = 0x28,
  28.     P9050_LAS1BRD = 0x2c,
  29.     P9050_LAS2BRD = 0x30,
  30.     P9050_LAS3BRD = 0x34,
  31.     P9050_EROMBRD = 0x38,
  32.     P9050_CS0BASE = 0x3c,
  33.     P9050_CS1BASE = 0x40,
  34.     P9050_CS2BASE = 0x44,
  35.     P9050_CS3BASE = 0x48,
  36.     P9050_INTCSR  = 0x4c,
  37.     P9050_CNTRL   = 0x50
  38. };
  39.  
  40. typedef enum
  41. {
  42.     P9050_MODE_BYTE   = 0,
  43.     P9050_MODE_WORD   = 1,
  44.     P9050_MODE_DWORD  = 2
  45. } P9050_MODE;
  46.  
  47. typedef enum
  48. {
  49.     P9050_ADDR_REG     = AD_PCI_BAR0,
  50.     P9050_ADDR_REG_IO  = AD_PCI_BAR1,
  51.     P9050_ADDR_SPACE0  = AD_PCI_BAR2,
  52.     P9050_ADDR_SPACE1  = AD_PCI_BAR3,
  53.     P9050_ADDR_SPACE2  = AD_PCI_BAR4,
  54.     P9050_ADDR_SPACE3  = AD_PCI_BAR5,
  55.     P9050_ADDR_EPROM   = AD_PCI_BAR_EPROM,
  56. } P9050_ADDR;
  57.  
  58.  
  59. enum { P9050_RANGE_REG = 0x00000080 };
  60.  
  61. typedef struct P9050_STRUCT *P9050_HANDLE;
  62. typedef P9050_HANDLE P9050HANDLE;
  63.  
  64. typedef struct
  65. {
  66.     DWORD dwCounter;   // number of interrupts received
  67.     DWORD dwLost;      // number of interrupts not yet dealt with
  68.     BOOL fStopped;     // was interrupt disabled during wait
  69.     DWORD dwStatusReg; // value of status register when interrupt occured
  70. } P9050_INT_RESULT;
  71.  
  72. typedef void (WINAPI *P9050_INT_HANDLER)( P9050_HANDLE hPlx, P9050_INT_RESULT *intResult);
  73.  
  74. // options for PLX_Open
  75. enum { P9050_OPEN_USE_INT  =   0x1 };
  76. enum { P9050_OPEN_FIX_BIT7 =   0x2 };
  77.  
  78. DWORD P9050_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
  79. BOOL P9050_Open (P9050_HANDLE *phPlx, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum, DWORD options);
  80. void P9050_Close (P9050_HANDLE hPlx);
  81. BOOL P9050_IsAddrSpaceActive(P9050_HANDLE hPlx, P9050_ADDR addrSpace);
  82. void P9050_GetPciSlot(P9050_HANDLE hPlx, WD_PCI_SLOT *pPciSlot);
  83.  
  84. void P9050_ReadWriteBlock (P9050_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  85.                     DWORD dwBytes, BOOL fIsRead, P9050_ADDR addrSpace, P9050_MODE mode);
  86. void P9050_ReadBlock (P9050_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  87.                     DWORD dwBytes, P9050_ADDR addrSpace, P9050_MODE mode);
  88. void P9050_WriteBlock (P9050_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  89.                     DWORD dwBytes, P9050_ADDR addrSpace, P9050_MODE mode);
  90. BYTE P9050_ReadByte (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr);
  91. void P9050_WriteByte (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr, BYTE data);
  92. WORD P9050_ReadWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr);
  93. void P9050_WriteWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr, WORD data);
  94. DWORD P9050_ReadDWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr);
  95. void P9050_WriteDWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr, DWORD data);
  96.  
  97. void P9050_ReadWriteSpaceBlock (P9050_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  98.                     DWORD dwBytes, BOOL fIsRead, P9050_ADDR addrSpace, P9050_MODE mode);
  99. void P9050_ReadSpaceBlock (P9050_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  100.                     DWORD dwBytes, P9050_ADDR addrSpace, P9050_MODE mode);
  101. void P9050_WriteSpaceBlock (P9050_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  102.                     DWORD dwBytes, P9050_ADDR addrSpace, P9050_MODE mode);
  103. BYTE P9050_ReadSpaceByte (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwOffset);
  104. void P9050_WriteSpaceByte (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwOffset, BYTE data);
  105. WORD P9050_ReadSpaceWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwOffset);
  106. void P9050_WriteSpaceWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwOffset, WORD data);
  107. DWORD P9050_ReadSpaceDWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwOffset);
  108. void P9050_WriteSpaceDWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwOffset, DWORD data);
  109.  
  110. BOOL P9050_IntIsEnabled (P9050_HANDLE hPlx);
  111. BOOL P9050_IntEnable (P9050_HANDLE hPlx, P9050_INT_HANDLER funcIntHandler);
  112. void P9050_IntDisable (P9050_HANDLE hPlx);
  113.  
  114. DWORD P9050_ReadReg (P9050_HANDLE hPlx, DWORD dwReg);
  115. void P9050_WriteReg (P9050_HANDLE hPlx, DWORD dwReg, DWORD dwData);
  116.  
  117. BOOL P9050_EEPROMReadWord(P9050_HANDLE hPlx, DWORD dwOffset, PWORD pwData);
  118. BOOL P9050_EEPROMWriteWord(P9050_HANDLE hPlx, DWORD dwOffset, WORD wData);
  119. BOOL P9050_EEPROMReadDWord(P9050_HANDLE hPlx, DWORD dwOffset, PDWORD pdwData);
  120. BOOL P9050_EEPROMWriteDWord(P9050_HANDLE hPlx, DWORD dwOffset, DWORD dwData);
  121. BOOL P9050_EEPROMValid(P9050_HANDLE hPlx);
  122.  
  123. DWORD P9050_ReadPCIReg(P9050_HANDLE hPlx, DWORD dwReg);
  124. void P9050_WritePCIReg(P9050_HANDLE hPlx, DWORD dwReg, DWORD dwData);
  125.  
  126. // this string is set to an error message, if one occurs
  127. extern CHAR P9050_ErrorString[];
  128.  
  129. #ifdef __cplusplus
  130. }
  131. #endif
  132.  
  133. #endif
  134.